Systems for control and manufacturing execution include many and different types of software applications. An example is a process graphics package, which presents data items representing the current status of a process on a screen, and allows an operator to issue control orders by inputting new values for data items. Another example is an event logging function, which stores and presents information on events and alarms. Yet another example is a history package, which collects series of data item values for long-term storage, for presentation as trend curves or in other forms, and for further processing by other applications. Yet another example is a report package, which collects certain data items, performs some calculations, and presents the result as a report.
Yet another example is a calculation package, for example a spreadsheet application, which collects samples of data item values, performs certain calculations, and potentially writes back new values to the same or different data items. Yet another example is an optimization package, which based on the values of a number of data items that describe the current performance of a process calculates new values for a number of setpoints in order to optimize the performance.
Yet another example is a production planning function, which uses information about the current production order backlog and values of data items that describe the current availability of certain processing or manufacturing equipment, to determine an optimal production schedule. Yet another example is a production report package, which uses certain data items to calculate and report the amount of products that has been produced.
For their functionality these applications and others require access to information such as real-time data, historical data, and alarm and event data from controllers and devices, and also from other software applications. However, today's control systems are heterogeneous systems, where components of different types and from different vendors, such as process controllers, programmable logic controllers (PLC), intelligent field devices, communication links, and software applications, are combined in an integrated system.
Traditionally, this has required that software applications requiring data in a control system needed to have special and different adaptations to access different sources for real-time data, historical data, and alarm and event data. This is illustrated in a simplified diagram in FIG. 1 from the Prior Art, which shows a process control system with a client application 1 and three different data sources 5A, 5B, 5C: a Programmable Logic Controller (PLC) 5A, accessed through Communication Driver A, 4A; a Process Controller 5B accessed through Communication Driver B, 4B; and a software application 5C accessed through a software interface. Other possible data sources may for example be fieldbus connected devices of different manufacture, requiring other types of communication drivers, and databases and other software applications with other types of software interfaces. The client application includes different specific adaptations 9 to allow it to communicate with the different data sources through these different communication drivers and software interfaces.
OPC (OLE for Process Control, where OLE means Object Linking and Embedding) is a specification that is aimed at eliminating some of these problems, by requiring all data sources to show the same type of interfaces. OPC is a well-known specification, published by the OPC Foundation. It is based on Microsoft's Component Object Model (COM).
FIG. 2 from the Prior Art shows a process control system with the same client application 1 and data sources 5A, 5B, 5C as shown in FIG. 1, but with an OPC Server 3A, 3B, 3C for each type of data source. All OPC servers expose the same types of interfaces, thus eliminating the need for the client application to include different data source specific adaptations.
OPC also allows a client application to access several data items with one single request as long as all data items are accessible through the same OPC server.
Although OPC relieves a client application from the need to use specific adaptations for different data sources, it still requires the client application to know which specific OPC server provides access to which data item, so that it can direct its access request to the right OPC server. For the same reason the client application can not access several data items with one single request when the data items are accessible through different OPC servers. This has the drawback that it adds complexity to the client application, which needs to keep track of which OPC server to use for each individual data item, and to generate separate access requests for access to data items that originate in different types of data sources. Another drawback is that when a new OPC server is installed in the system to provide access to a new type of data source, the client application needs to be changed to be able to use also that OPC server.
U.S. Pat. No. 5,038,318 entitled Device for communicating real time data between a programmable logic controller and a program operating in a central controller discloses a computer connected to a network of programmable logic controllers (PLCs) which could be used to perform monitoring and control functions in a context of manufacturing. The description discloses an add-in computer program operable through a general purpose spreadsheet program in a personal computer which can move real-time status and control messages directly between cells in the spreadsheet displayed on the PC and memory parts of programmable logic controllers (PLCs). This aims at facilitating a user's real-time monitoring and control of manufacturing performed at machine tools or in processing stations by means of a program that could run on a personal computer, a PC.
However, the functionality is described for a traditional network of PLCs connected via coaxial cable. The functionality describes an ability to communicate between a PLC and the PC which is limited to:                the spreadsheet application sending a message to a PLC,        which message contains a predetermined specific memory register of the PLC,        which message is sent to the specific PLC via a network card and a local network,        for the purposes of reading or writing information to or from a specified cell in the spreadsheet program on the PC.        
WO 99/46651 entitled Process control with ActiveX, discloses a software development toolkit for a user to create one or more real-time interactive control and communication software objects, for use in connection with a computer and a machine. Disclosed is the use of a type of software object developed by Microsoft Corporation called ActiveX components. WO 99/46651 discloses that prefabricated software objects of the ActiveX type may be provided by means of the described toolkit. These ActiveX software objects are also described as using OPC as a communication means between a software representation of an object for control and a control signal in a processing machine. However the key association and configuration functions of the software object described are created in advance of use, that is, before run-time. Furthermore, the software object described is limited as regards for example updates and future use or changes in use because the software object created by the toolkit is directly linked to a connection tag for an individual specified control signal.
WO00102953 entitled “Method of integrating an application in a computerized system” discloses a method for integration of many and various types of applications in a computerized system. This method is based on a concept where real world objects are represented as “composite objects”. Different facets of a real world object, such as its physical location, the current stage in a process, a control function, an operator interaction, a simulation model, some documentation about the object, etc., are each described as different aspects of the composite object. A composite object is a container for one or more such aspects. Thus, a composite object is not an object in the traditional meaning of object-oriented systems, but rather a container of references to such traditional objects, which implement the different aspects. Each aspect or group of aspects may be implemented by an independent software application, which provides its functionality through a set of interfaces that are accessible through the composite object. Another software application can thus query a composite object for a function associated with one of its aspects, and as a result obtain through the composite object a reference to the interface that implements the function.
Web Services is an example of a technology that enables remote access to (software) objects by use of Internet technology. WO 0077653A1, entitled Method and apparatus for providing network services, discloses a method and apparatus for providing network services for businesses. The description discloses a method to use HTTP (Hypertext Transfer Protocol) and requests GET and POST to provide input data for a web service. The use and development of Web Services using cross-platform technologies such as XML (Extensible Markup Language), HTTP and SOAP (Simple Object Access Protocol) is described in the article “Web Services: Building Reusable Web Components with SOAP and ASP.NET”, published by Microsoft Press in the February 2001 Issue of MSDN Magazine. The article is also published on the Internet at the Microsoft msdnmag web site.